import { createRouter, createWebHashHistory } from 'vue-router'

import Layout from '@/layout/Index.vue'

import store from '@/store'
import { menuTree } from '@/apis/personal'






//页面
const Login = () => import("@/views/login/Index.vue")
const PersonalIndex = () => import("@/views/personal/Index.vue")
const PersonalMessage = () => import("@/views/personal/Message.vue")
const NotFount = () => import("@/views/404.vue")

//应用管理
const AppDept = () =>import("@/views/app/Dept.vue")
const AppResource = () =>import("@/views/app/Resource.vue")
const AppRole= () =>import("@/views/app/Role.vue")
const AppUser= () =>import("@/views/app/User.vue")

//系统管理
const SysUser = () =>import("@/views/sys/User.vue")
const SysNotice = () =>import("@/views/sys/Notice.vue")

//审计管理
const LogsVisit = () =>import("@/views/logs/Visit.vue")
const LogsOperation = () =>import("@/views/logs/Operation.vue")



const routeConfig = [
  {
    path: '/',
    name: 'Hone',
    component: Layout,
    children: [
      {
        path: 'login',
        name: 'Login',
        component: Login
      },
      {
        path: 'personal',
        name: 'Personal',
        component: PersonalIndex,
        children: [
          {
            path: 'message',
            name: 'PersonalMessage',
            component: PersonalMessage
          },
        ]
      },
      {
        path:'/app',
        name:'App',
        children:[
          {
            path:'user',
            name:'AppUser',
            component:AppUser
          },
          {
            path:'dept',
            name:"AppDept",
            component:AppDept
          },
          {
            path:'role',
            name:'AppRole',
            component:AppRole
          },
          {
            path:'resource',
            name:'AppResource',
            component:AppResource
          },
        ]
      },
      //系统管理的路由
      {
        path:'/sys',
        name:'Sys',
        children:[
          {
            path:'user',
            name:'SysUser',
            component:SysUser
          },
          {
            path:'notice',
            name:'SysNotice',
            component:SysNotice
          }
        ]
      },
      //审计管理的路由
      {
        path:'/logs',
        name:'Logs',
        children:[
          {
            path:'visit',
            name:'LogsVisit',
            component:LogsVisit
          },
          {
            path:'operation',
            name:'LogsOperation',
            component:LogsOperation
          }
        ]
      },
      {
        path: '404',
        name: 'NotFound',
        component: NotFount
      }
    ]
  },
  {
    path: '/:pathMatch(.*)*',
    name: '404',
    redirect: '/404'
  },
  //应用管理的路由
  
]

const router = createRouter({
  history: createWebHashHistory(),
  routes: routeConfig
})
//1.登录跳转第一个导航 2.是首页直接跳转到第一个导航

router.beforeEach(async (to) =>{
  const isLogin = store.getters['user/isLogin']

  //1111登录跳转第一个导航
  if(to.path ==='/login'){
    if(isLogin){
      console.log(store.state.firstRoute);
      return store.state.firstRoute
    }
    return true
  }
  if (store.state.routeLoaded){
    return true
  }

  //请求菜单数据
  await initMenu()
  const {state:{firstRoute}} = store
  //2222是首页直接跳转到第一个导航
  if(to.path ==='/' &&firstRoute){
    return firstRoute
  }
  return true
})

function initMenu(){

  return menuTree()
  .then((res)=>{
    const {data} = res

    //菜单路由已加载
    store.commit('setRouteLoaded' ,true)

    //设置菜单数据
    store.commit('setMenuTree',data)

    //设置 访问首页默认访问的页面
    store.commit('setFirstRoute',data[0].children[0].path)
  })
}
export default router
